package com.cgnpc.scp.purchase.service;

import com.cgnpc.cud.core.domain.AjaxResult;
import com.cgnpc.scp.common.bean.CreateFileInfo;
import com.cgnpc.scp.common.bean.MyPageResult;
import com.cgnpc.scp.common.pojo.UserInfo;
import com.cgnpc.scp.purchase.mybatis.entity.PurchaseCapital;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Locale;

/******************************
 * 用途说明: 调试采购管理-资金计划
 * 作者姓名: yblrs
 * 创建时间: 2020/8/20 21:26
 ******************************/
public interface IPurchaseCapitalService {

    /**********************************
     * 用途说明: 调试采购管理-资金计划---保存或修改
     * 参数说明: UserInfo loginUserInfo, Locale reqLocale, List<T> reqEntityList
     * 返回值说明: AjaxResult
     ***********************************/
    <T extends PurchaseCapital> AjaxResult saveOrUpdate(UserInfo loginUserInfo, Locale reqLocale, List<T> reqEntityList);

    /**********************************
     * 用途说明: 调试采购管理-资金计划---分页查询
     * 参数说明: T reqEntity
     * 返回值说明: MyPageResult
     ***********************************/
    <T extends PurchaseCapital> MyPageResult<T> loadByPaging(T reqEntity);

    /**********************************
     * 用途说明: 调试采购管理-资金计划---根据id查询指定信息
     * 参数说明: String id
     * 返回值说明: T
     ***********************************/
    <T extends PurchaseCapital> T loadById(String id);

    /**********************************
     * 用途说明: 调试采购管理-资金计划---导出Excel
     * 参数说明: T reqEntity
     * 返回值说明: CreateFileInfo
     ***********************************/
    <T extends PurchaseCapital> CreateFileInfo exportExcel(T reqEntity) throws Exception;

    /**********************************
     * 用途说明: 调试采购管理-资金计划---导入Excel
     * 参数说明: UserInfo loginUserInfo, Locale reqLocale, MultipartFile reqFile
     * 返回值说明: AjaxResult
     ***********************************/
    <T extends PurchaseCapital> AjaxResult importFromExcel(UserInfo loginUserInfo, Locale reqLocale, MultipartFile reqFile) throws Exception;

    /**********************************
     * 用途说明: 调试采购管理-资金计划---删除
     * 参数说明: UserInfo loginUserInfo, Locale reqLocale, T reqEntity
     * 返回值说明: AjaxResult
     ***********************************/
    <T extends PurchaseCapital> AjaxResult del(UserInfo loginUserInfo, Locale reqLocale, T reqEntity);

}
